#ifndef _ISA_H_
#define _ISA_H_

#include <string>
#include <vector>
#include "instruction.h"


const unsigned int BRANCHINSTRUCTION = 99;
const std::string INSTR_MOVE_NAME = "MOV";
const std::string INSTR_SUB_NAME  = "SUB";

class CISA
{
public:
	CISA();
	~CISA();
	std::string getHeaderCode() {return header;};
	std::string getFooterCode() {return footer;};
	CInstruction* requestNewInstruction(SGlobalInfo &info);
private:
	void addInstructionType(std::string name, unsigned char argNo, opType op1, opType op2, opType op3);
	std::string header;
	std::string footer;
	std::vector<CInstruction*> instructionTypes;

};


#endif
